package utils;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;

import java.util.*;

public class LabelKeyWords {



    public static Map<String,String> isXXZS_behavior = ImmutableMap.<String,String>builder()
            .put("isXXZS_beat","寻衅滋事 殴打")
            .put("isXXZS_chase", "寻衅滋事 追逐" )
            .put("isXXZS_intercept", "寻衅滋事 拦截")
            .put("isXXZS_abuse", "寻衅滋事 辱骂")
            .put("isXXZS_threaten", "寻衅滋事 恐吓")
            .put("isXXZS_damage", "寻衅滋事 损毁 损坏 毁坏 财物")
            .put("isXXZS_occupy", "寻衅滋事 占用 财物")
            .put("isXXZS_chaos", "寻衅滋事 公共场所 闹事 秩序 混乱")

            .build();

    public static Map<String,String> isXXZS_harm = ImmutableMap.<String,String>builder()
            .put("isXXZS_harm_value", "寻衅滋事 物损价值")
            .put("isXXZS_harm_one", "寻衅滋事 一人 轻微伤 轻伤 轻微 伤害 受伤")
            .put("isXXZS_harm_two", "寻衅滋事 二人 轻微伤 轻伤 轻微 伤害 受伤")
            .put("isXXZS_harm_insane", "寻衅滋事 他人 精神失常")
            .put("isXXZS_harm_suicide", "寻衅滋事 他人 自杀")
            .build();

    public static Map<String, String> isXXZS_circumstance = ImmutableMap.<String, String>builder()
            .put("isXXZS_cir_beat_multi", "寻衅滋事 多次 殴打")
            .put("isXXZS_cir_beat_arm", "寻衅滋事 凶器 殴打 持凶")
            .put("isXXZS_cir_beat_psychotic", "寻衅滋事 精神病 殴打")
            .put("isXXZS_cir_beat_disabled", "寻衅滋事 残疾 殴打")
            .put("isXXZS_cir_beat_beggar", "寻衅滋事 流浪 乞讨 殴打")
            .put("isXXZS_cir_beat_elderly", "寻衅滋事 老年人 殴打")
            .put("isXXZS_cir_beat_pregnant", "寻衅滋事 孕妇 殴打")
            .put("isXXZS_cir_beat_underaged", "寻衅滋事 未成年人 殴打")
            .put("isXXZS_cir_beat_public", "寻衅滋事 公用场所 殴打" )
            .put("isXXZS_cir_influ_work","严重影响他人工作")
            .put("isXXZS_cir_influ_life", "严重影响他人生活")
            .put("isXXZS_cir_influ_manu", "严重影响他人生产")
            .put("isXXZS_cir_influ_manage", "严重影响他人经营")
            .put("isXXZS_cir_others", "其他情节恶劣的情形")
            .put("isXXZS_cir_chase_multi", "寻衅滋事 多次 追逐")
            .put("isXXZS_cir_chase_arm", "寻衅滋事 凶器 持凶 追逐")
            .put("isXXZS_cir_chase_psychotic", "寻衅滋事 精神病 追逐")
            .put("isXXZS_cir_chase_disabled", "寻衅滋事 残疾 追逐")
            .put("isXXZS_cir_chase_beggar", "寻衅滋事 流浪 乞讨 追逐" )
            .put("isXXZS_cir_chase_elderly", "寻衅滋事 老年人 追逐")
            .put("isXXZS_cir_chase_pregnant", "寻衅滋事 孕妇 追逐")
            .put("isXXZS_cir_chase_underaged", "寻衅滋事 未成年人 追逐")
            .put("isXXZS_cir_intercept_multi", "寻衅滋事 多次 追逐 拦截")
            .put("isXXZS_cir_intercept_arm", "寻衅滋事 凶器 持凶 拦截")
            .put("isXXZS_cir_intercept_psychotic", "寻衅滋事 精神病 拦截")
            .put("isXXZS_cir_intercept_disabled", "寻衅滋事 残疾 拦截")
            .put("isXXZS_cir_intercept_beggar", "寻衅滋事 流浪 乞讨 拦截")
            .put("isXXZS_cir_intercept_elderly", "寻衅滋事 老年人 拦截")
            .put("isXXZS_cir_intercept_pregnant", "寻衅滋事 孕妇 拦截")
            .put("isXXZS_cir_intercept_underaged", "寻衅滋事 未成年人 拦截")
            .put("isXXZS_cir_abuse_multi", "寻衅滋事 多次 辱骂")
            .put("isXXZS_cir_abuse_arm", "寻衅滋事 凶器 持凶 辱骂")
            .put("isXXZS_cir_abuse_psychotic", "寻衅滋事 精神病 辱骂")
            .put("isXXZS_cir_abuse_disabled", "寻衅滋事 残疾 辱骂")
            .put("isXXZS_cir_abuse_beggar", "寻衅滋事 流浪 乞讨 辱骂")
            .put("isXXZS_cir_abuse_elderly", "寻衅滋事 老年人 辱骂")
            .put("isXXZS_cir_abuse_pregnant", "寻衅滋事 孕妇 辱骂")
            .put("isXXZS_cir_abuse_underaged", "寻衅滋事 未成年人 辱骂")
            .put("isXXZS_cir_threaten_multi", "寻衅滋事 多次 恐吓")
            .put("isXXZS_cir_threaten_arm", "寻衅滋事 凶器 持凶 恐吓")
            .put("isXXZS_cir_threaten_psychotic", "寻衅滋事 精神病 恐吓")
            .put("isXXZS_cir_threaten_disabled", "寻衅滋事 残疾 恐吓")
            .put("isXXZS_cir_threaten_beggar", "寻衅滋事 流浪 乞讨 恐吓")
            .put("isXXZS_cir_threaten_elderly", "寻衅滋事 老年人 恐吓")
            .put("isXXZS_cir_threaten_pregnant", "寻衅滋事 孕妇 恐吓")
            .put("isXXZS_cir_threaten_underaged", "寻衅滋事 未成年人 恐吓")
            .build();


    public static Map<String,String> isJTZS_behavior = ImmutableMap.<String,String>builder()
            .put("isJTZS_heavilyHarm", "交通肇事 重伤")
            .put("isJTZS_dead", "交通肇事 死亡")
            .put("isJTZS_asset", "交通肇事 公私财产 重大损失")
            .put("isJTZS_escape", "交通肇事 逃逸")
            .put("isJTZS_escapeDead", "交通肇事 逃逸 死亡")
            //.put("isJTZS_others", "交通肇事 其他情节")
            .build();


/*            .put("isWXJS_chase", "危险驾驶 追逐竞驶")
            .put("isWXJS_alcohol", "危险驾驶 醉酒")
            .put("isWXJS_overman_school", "危险驾驶^0.3校车^0.3超员^0.4")
            .put("isWXJS_overman_bus", "危险驾驶^0.3客车^0.3超员^0.4")
            .put("isWXJS_overspeed_school", "危险驾驶^0.3校车^0.3超速^0.4")
            .put("isWXJS_overspeed_bus", "危险驾驶^0.3客车^0.3超速^0.4")
            .put("isWXJS_danger", "危险驾驶 化学品")
            //.put("isWXJS_unlicensed", "危险驾驶 无证")
            .put("isWXJS_unlicensed", "危险驾驶 无证 未取得 无驾驶资格")
            .put("isWXJS_escape", "危险驾驶 逃逸")*/
    public static Map<String,String> isWXJS_behavior = ImmutableMap.<String,String>builder()
            .put("isWXJS_chase", "追逐竞驶")
            .put("isWXJS_alcohol", "醉酒 酒后 乙醇 酒精")
            .put("isWXJS_overman_school", "校车 超员^1.5")
            .put("isWXJS_overman_bus", "客车 超员^1.5")
            .put("isWXJS_overspeed_school", "校车 超速^1.5")
            .put("isWXJS_overspeed_bus", "客车 超速^1.5")
            .put("isWXJS_danger", "化学品")
            .put("isWXJS_unlicensed", "危险驾驶 无证 未取得")
            .put("isWXJS_escape", "逃逸")
            .build();

    public static Map<String,String> isZSFMYSZZDP_circumstance = ImmutableMap.<String,String>builder()
            .put("is_ZSFMYSZZDP_cir_gun", "毒品 枪支弹药")
            .put("is_ZSFMYSZZDP_cir_boom", "毒品 爆炸物")
            .put("is_ZSFMYSZZDP_cir_dead", "毒品 执法人员 死亡")
            .put("is_ZSFMYSZZDP_cir_heavilyHarm", "毒品 执法人员 重伤")
            .put("is_ZSFMYSZZDP_cir_slightHarm", "毒品 执法人员 轻伤")
            .build();

   /* public static Map<String,String> isZSFMYSZZDP_behavior = ImmutableMap.<String,String>builder()
            .put("is_ZSFMYSZZDP_behavior_smuggle", "走私毒品")
            .put("is_ZSFMYSZZDP_behavior_smuggle_opium", "走私毒品 鸦片")
            .put("is_ZSFMYSZZDP_behavior_smuggle__heroin", "走私毒品 海洛因")
            .put("is_ZSFMYSZZDP_behavior_smuggle_MDMA", "走私毒品 甲基苯丙胺")
            .put("is_ZSFMYSZZDP_behavior_sale", "贩卖毒品")
            .put("is_ZSFMYSZZDP_behavior_sale_opium", "贩卖毒品 鸦片")
            .put("is_ZSFMYSZZDP_behavior_sale__heroin", "贩卖毒品 海洛因")
            .put("is_ZSFMYSZZDP_behavior_sale_MDMA", "贩卖毒品 甲基苯丙胺")
            .put("is_ZSFMYSZZDP_behavior_transport", "运输毒品")
            .put("is_ZSFMYSZZDP_behavior_transport_opium", "运输毒品 鸦片")
            .put("is_ZSFMYSZZDP_behavior_transport_MDMA", "运输毒品 甲基苯丙胺")
            .put("is_ZSFMYSZZDP_behavior_transport__heroin", "运输毒品 海洛因")
            .put("is_ZSFMYSZZDP_behavior_make", "制造毒品")
            .put("is_ZSFMYSZZDP_behavior_make_opium", "制造毒品 鸦片")
            .put("is_ZSFMYSZZDP_behavior_make_MDMA", "制造毒品 甲基苯丙胺")
            .put("is_ZSFMYSZZDP_behavior_make__heroin", "制造毒品 海洛因")
            .put("is_ZSFMYSZZDP_behavior_principal", "走私毒品 贩卖毒品 运输毒品 制造毒品 首要分子")
            .put("is_ZSFMYSZZDP_behavior_arm", "走私毒品 贩卖毒品 运输毒品 制造毒品 武装")
            .put("is_ZSFMYSZZDP_behavior_resist", "走私毒品 贩卖毒品 运输毒品 制造毒品 暴力抗拒")
            .put("is_ZSFMYSZZDP_behavior_international", "走私毒品 贩卖毒品 运输毒品 制造毒品 国际")
            .put("is_ZSFMYSZZDP_behavior_underage", "走私毒品 贩卖毒品 运输毒品 制造毒品 未成年人")
            .put("is_ZSFMYSZZDP_behavior_pregnant", "走私毒品 贩卖毒品 运输毒品 制造毒品 孕妇 残疾 哺乳 病人")
            .put("is_ZSFMYSZZDP_behavior_rehab", "走私毒品 贩卖毒品 运输毒品 制造毒品 戒毒场所 监管场所")
            .put("is_ZSFMYSZZDP_behavior_express", "走私毒品 贩卖毒品 运输毒品 制造毒品 物流 快递")
            .build();*/

    public static Map<String,String> isZSFMYSZZDP_behavior = ImmutableMap.<String,String>builder()
            .put("is_ZSFMYSZZDP_behavior_smuggle", "走私 毒品")
            .put("is_ZSFMYSZZDP_behavior_smuggle_opium", "走私 鸦片")
            .put("is_ZSFMYSZZDP_behavior_smuggle__heroin", "走私 海洛因")
            .put("is_ZSFMYSZZDP_behavior_smuggle_MDMA", "走私 甲基苯丙胺")
            .put("is_ZSFMYSZZDP_behavior_sale", "贩卖 毒品")
            .put("is_ZSFMYSZZDP_behavior_sale_opium", "贩卖 鸦片")
            .put("is_ZSFMYSZZDP_behavior_sale__heroin", "贩卖 海洛因")
            .put("is_ZSFMYSZZDP_behavior_sale_MDMA", "贩卖 甲基苯丙胺")
            .put("is_ZSFMYSZZDP_behavior_transport", "运输 毒品")
            .put("is_ZSFMYSZZDP_behavior_transport_opium", "运输 鸦片")
            .put("is_ZSFMYSZZDP_behavior_transport_MDMA", "运输 甲基苯丙胺")
            .put("is_ZSFMYSZZDP_behavior_transport__heroin", "运输 海洛因")
            .put("is_ZSFMYSZZDP_behavior_make", "制造 毒品")
            .put("is_ZSFMYSZZDP_behavior_make_opium", "制造 鸦片")
            .put("is_ZSFMYSZZDP_behavior_make_MDMA", "制造 甲基苯丙胺")
            .put("is_ZSFMYSZZDP_behavior_make__heroin", "制造 海洛因")
            .put("is_ZSFMYSZZDP_behavior_principal", "毒品 首要分子")
            .put("is_ZSFMYSZZDP_behavior_arm", "毒品 武装")
            .put("is_ZSFMYSZZDP_behavior_resist", "毒品 暴力抗拒")
            .put("is_ZSFMYSZZDP_behavior_international", "毒品 国际")
            .put("is_ZSFMYSZZDP_behavior_underage", "毒品 未成年人")
            .put("is_ZSFMYSZZDP_behavior_pregnant", "毒品 孕妇 残疾 哺乳 病人")
            .put("is_ZSFMYSZZDP_behavior_rehab", "毒品 戒毒 监管场所")
            .put("is_ZSFMYSZZDP_behavior_express", "毒品 物流 快递")
            .build();

    public static Map<String, String> isMeasure_heavier = ImmutableMap.<String,String>builder()
            .put("heavier_recidivism", "从重 累犯")
            .put("heavier_others", "从重处罚")
            .build();

    public static Map<String, String> isMeasure_ease = ImmutableMap.<String,String>builder()
            .put("ease_surrender", "从轻 自首")
            .put("ease_confess", "从轻 如实供述")
            .put("ease_well", "从轻 认罪态度较好")
            .put("ease_compensate", "从轻 主动赔偿")
            .put("ease_forgive", "从轻 谅解")
            .put("ease_attempted", "从轻 未遂")
            .put("ease_others", "从轻处罚")
            .build();

    public static Map<String, String> isMeasure_easeCir = ImmutableMap.<String,String>builder()
            .put("easeCircum_surrender", "减轻 自首")
            .put("easeCircum_confess", "减轻 如实供述")
            .put("easeCircum_well", "减轻 认罪态度较好")
            .put("easeCircum_compensate", "减轻 主动赔偿")
            .put("easeCircum_forgive", "减轻 谅解")
            .put("easeCircum_attempted", "减轻 未遂")
            .put("easeCircum_stop", "减轻 中止")
            .put("easeCircum_others", "减轻处罚")
            .build();

    public static Map<String, String> isMeasure_common = ImmutableMap.<String,String>builder()
            .putAll(isMeasure_ease)
            .putAll(isMeasure_easeCir)
            .putAll(isMeasure_heavier)
            .build();


    public static Map<String, String> isAllLabels  = ImmutableMap.<String,String>builder()
            .putAll(isXXZS_behavior)
            .putAll(isXXZS_circumstance)
            .putAll(isXXZS_harm)
            .putAll(isZSFMYSZZDP_behavior)
            .putAll(isZSFMYSZZDP_circumstance)
            .putAll(isJTZS_behavior)
            .putAll(isWXJS_behavior)
            .putAll(isMeasure_common)
            .build();


    public static List<String> L2Labels = ImmutableList.<String>builder()
            .add("WXJS_behavior")
            .add("JTZS_behavior")
            .add("ZSFMYSZZDP_circums")
            .add("ZSFMYSZZDP_behavior")
            .add("XXZS_circums")
            .add("XXZS_harm")
            .add("XXZS_behavior")
            .add("penalty_heavier")
            .add("penalty_ease")
            .add("penalty_ease_circumstance")
            .build();

    public static List<String> L3Labels = ImmutableList.copyOf(isAllLabels.values());


    // crimeStr like gj_l2crime:  gj_penalty_ease, gj_penalty_heavier, ...
    // return query L2 Label list
    public static  Map<String, List<List<String>>> gQueryLabelMap = new HashMap<>();
    static {

        gQueryLabelMap.put("penalty_ease",
                ImmutableList.of(Arrays.asList("penalty_ease", "penalty_ease_circumstance"),
                        Collections.emptyList()));

        gQueryLabelMap.put("penalty_heavier",
                ImmutableList.of(Arrays.asList("penalty_heavier"),
                        Collections.emptyList()));

        gQueryLabelMap.put("ease_well", ImmutableList.of(Arrays.asList("penalty_ease", "penalty_ease_circumstance"),
                Arrays.asList("ease_well", "easeCircum_well")));

        gQueryLabelMap.put("ease_forgive", ImmutableList.of(Arrays.asList("penalty_ease", "penalty_ease_circumstance"),
                Arrays.asList("ease_forgive", "easeCircum_forgive")));

        gQueryLabelMap.put("isWXJS_unlicensed", ImmutableList.of(Arrays.asList("WXJS_behavior"),
                Arrays.asList("isWXJS_unlicensed")));

        gQueryLabelMap.put("isWXJS_alcohol", ImmutableList.of(Arrays.asList("WXJS_behavior"),
                Arrays.asList("isWXJS_alcohol")));

        gQueryLabelMap.put("isWXJS_overman", ImmutableList.of(Arrays.asList("WXJS_behavior"),
                Arrays.asList("isWXJS_overman_school", "isWXJS_overman_bus")));

        gQueryLabelMap.put("isJTZS_heavilyHarm", ImmutableList.of(Arrays.asList("JTZS_behavior"),
                Arrays.asList("isJTZS_heavilyHarm")));

        gQueryLabelMap.put("isJTZS_dead", ImmutableList.of(Arrays.asList("JTZS_behavior"),
                Arrays.asList("isJTZS_dead")));

        gQueryLabelMap.put("isJTZS_asset", ImmutableList.of(Arrays.asList("JTZS_behavior"),
                Arrays.asList("isJTZS_asset")));

        gQueryLabelMap.put("isJTZS_escape", ImmutableList.of(Arrays.asList("JTZS_behavior"),
                Arrays.asList("isJTZS_escape", "isJTZS_escapeDead")));

        gQueryLabelMap.put("ZSFMYSZZDP_smuggle", ImmutableList.of(Arrays.asList("ZSFMYSZZDP_behavior"),
                Arrays.asList("is_ZSFMYSZZDP_behavior_smuggle",
                        "is_ZSFMYSZZDP_behavior_smuggle_opium",
                        "is_ZSFMYSZZDP_behavior_smuggle__heroin",
                        "is_ZSFMYSZZDP_behavior_smuggle_MDMA")));

        gQueryLabelMap.put("ZSFMYSZZDP_sale", ImmutableList.of(Arrays.asList("ZSFMYSZZDP_behavior"),
                Arrays.asList("is_ZSFMYSZZDP_behavior_sale",
                        "is_ZSFMYSZZDP_behavior_sale_opium",
                        "is_ZSFMYSZZDP_behavior_sale__heroin",
                        "is_ZSFMYSZZDP_behavior_sale_MDMA")));

        gQueryLabelMap.put("ZSFMYSZZDP_transport", ImmutableList.of(Arrays.asList("ZSFMYSZZDP_behavior"),
                Arrays.asList("is_ZSFMYSZZDP_behavior_transport",
                        "is_ZSFMYSZZDP_behavior_transport_opium",
                        "is_ZSFMYSZZDP_behavior_transport_MDMA",
                        "is_ZSFMYSZZDP_behavior_transport__heroin")));

        gQueryLabelMap.put("ZSFMYSZZDP_underage", ImmutableList.of(Arrays.asList("ZSFMYSZZDP_behavior"),
                Arrays.asList("is_ZSFMYSZZDP_behavior_underage")));

        gQueryLabelMap.put("ZSFMYSZZDP_international", ImmutableList.of(Arrays.asList("ZSFMYSZZDP_behavior"),
                Arrays.asList("is_ZSFMYSZZDP_behavior_international")));

        gQueryLabelMap.put("ZSFMYSZZDP_principal", ImmutableList.of(Arrays.asList("ZSFMYSZZDP_behavior"),
                Arrays.asList("is_ZSFMYSZZDP_behavior_principal")));

        gQueryLabelMap.put("ZSFMYSZZDP_arm", ImmutableList.of(Arrays.asList("ZSFMYSZZDP_behavior"),
                Arrays.asList("is_ZSFMYSZZDP_behavior_arm")));

    }
}
